Source for file SC_CheckError.php
Documentation is available at SC_CheckError.php
* This file is part of EC-CUBE
* Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
* http://www.lockon.co.jp/
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/*----------------------------------------------------------------------
*----------------------------------------------------------------------
// チェック対象の値が含まれる配列をセットする。
function doFunc($value, $arrFunc) {
foreach ( $arrFunc as $key ) {
// value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
foreach($arrTag[1] as $val) {
foreach($value[2] as $tag) {
if(eregi("^" . $tag . "$", $val)) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "に許可されていないタグ[" . strtoupper($val) . "]が含まれています。<br />";
// value[0] = 項目名 value[1] = 判定対象
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
// value[0] = 判定対象 value[1] = 項目名
if(isset ($this->arrErr[$value[0]])) {
$this->createParam($value);
$this->arrErr[$value[0]] = "※ " . $value[0] . "が入力されていません。<br />";
// value[0] = 項目名 value[1] = 判定対象
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "にスペース、タブ、改行のみの入力はできません。<br />";
// value[0] = 項目名 value[1] = 判定対象
function NO_SPTAB( $value ) { // 受け取りがない場合エラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "にスペース、タブ、改行は含めないで下さい。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "に0で始まる数値が入力されています。<br />";
// value[0] = 項目名 value[1] = 判定対象
function SELECT_CHECK( $value ) { // プルダウンなどで選択されていない場合エラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "が選択されていません。<br />";
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "と" . $value[1] . "が一致しません。<br />";
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "と" . $value[1] . "は、同じ値を使用できません。<br />";
/* 値の大きさを比較する value[2] < value[3]でなければエラー */
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "は" . $value[1] . "より大きい値を入力できません。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大文字数(半角も全角も1文字として数える)
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( mb_strlen($this->arrParam[$value[1]]) > $value[2] ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "字以下で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える)
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( mb_strlen($this->arrParam[$value[1]]) < $value[2] ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "字以上で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大数
function MAX_CHECK( $value ) { // 入力が最大数以上ならエラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if($this->arrParam[$value[1]] > $value[2] ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "以下で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小数
function MIN_CHECK( $value ) { // 入力が最小数未満ならエラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if($this->arrParam[$value[1]] < $value[2] ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "以上で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function NUM_CHECK( $value ) { // 入力文字が数字以外ならエラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "は数字で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($this->arrParam[$value[1]]) > 0 && !EregI("^[[:digit:]]+[\.]?[[:digit:]]+$", $this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は数字で入力してください。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "は半角英字で入力してください。<br />";
/* 電話番号の判定 (数字チェックと文字数チェックを実施する。)
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
for($i = 1; $i <= 3; $i++ ) {
// すべての項目が満たされていない場合を判定(一部だけ入力されている状態)
if($cnt > 0 && $cnt < 3) {
$this->arrErr[$value[1]] .= "※ " . $value[0] . "はすべての項目を入力してください。<br />";
for($i = 1; $i <= 3; $i++ ) {
$this->arrErr[$value[$i]] .= "※ " . $value[0] . $i . "は" . $value[4] . "字以内で入力してください。<br />";
} else if (strlen($this->arrParam[$value[$i]]) > 0 && !EregI("^[[:digit:]]+$", $this->arrParam[$value[$i]])) {
$this->arrErr[$value[$i]] .= "※ " . $value[0] . $i . "は数字で入力してください。<br />";
if ($total_count > TEL_LEN) {
$this->arrErr[$value[3]] .= "※ " . $value[0] . "は" . TEL_LEN . "文字以内で入力してください。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i = 1; $i < $max; $i++ ) {
if(isset ($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i = 1; $i < $max; $i++ ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
// 既に該当項目にエラーがある場合は、判定しない。
for($i = 1; $i < $max; $i++ ) {
if(isset ($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i = 1; $i < $max; $i++ ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i = 1; $i < $max; $i++ ) {
if(isset ($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i = 1; $i < $max; $i++ ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i = 1; $i < $max; $i++ ) {
if(isset ($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i = 1; $i < $max; $i++ ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は先頭の項目から順番に入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function KANA_CHECK( $value ) { // 入力文字がカナ以外ならエラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "はカタカナで入力してください。<br />";
/* カタカナの判定2(タブ、スペースは許可する) */
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if(strlen($this->arrParam[$value[1]]) > 0 && ! mb_ereg("^([ \t\r\n]|[ァ-ヶ]|[ー])+$", $this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "はカタカナで入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "は英数字で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function GRAPH_CHECK( $value ) { // 入力文字が英数記号以外ならエラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "は英数記号で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象
function ZERO_CHECK( $value ) { // 入力値で0が許されない場合エラーを返す
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "は1以上を入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
// $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], "n");
if( ( $count > 0 ) && $value[2] > $count || $value[3] < $count ) {
$this->arrErr[$value[1]] = "※ $value[0]は$value[2]桁〜$value[3]桁で入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if(($count > 0) && $count != $value[2] ) {
$this->arrErr[$value[1]] = "※ $value[0]は$value[2]桁で入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "の形式が不正です。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "に使用する文字を正しく入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象URL
function URL_CHECK( $value ){ // URLを正規表現で判定する。デフォルトでhttp://があってもOK
if(isset ($this->arrErr[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "を正しく入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子)
if(isset ($this->arrErr[$value[1]]) || count($value[2]) == 0) {
$this->createParam($value);
if($_FILES[$value[1]]['name'] != "" ) {
$array_ext = explode(".", $_FILES[$value[1]]['name']);
$ext = $array_ext[ count ( $array_ext ) - 1 ];
foreach ( $value[2] as $checkExt ){
if ( $ext == $checkExt) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "で許可されている形式は、" . $strExt . "です。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定ディレクトリ
function FIND_FILE( $value ) { // 受け取りがない場合エラーを返す
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$path = $dir . "/" . $this->arrParam[$value[1]];
$this->arrErr[$value[1]] = "※ " . $path . "が見つかりません。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定サイズ(KB)
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if(!($_FILES[$value[1]]['size'] != "" && $_FILES[$value[1]]['size'] > 0)){
$this->arrErr[$value[1]] = "※ " . $value[0] . "をアップロードして下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定サイズ(KB)
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( $_FILES[$value[1]]['size'] > $value[2] * 1024 ){
if( $value[2] >= 1000 ) {
$value[2] = $value[2] / 1000;
$this->arrErr[$value[1]] = "※ " . $value[0] . "のファイルサイズは" . $value[2] . $byte . "以下のものを使用してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($_FILES[$value[1]]['name']) > 0 && ! EregI("^[[:alnum:]_\.-]+$", $_FILES[$value[1]]['name']) ) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "のファイル名に日本語やスペースは使用しないで下さい。<br />";
/* ファイル名の判定(アップロード以外の時) */
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($this->arrParam[$value[1]]) > 0 && ! EregI("^[[:alnum:]_\.-]+$", $this->arrParam[$value[1]]) || EregI("[\\]" ,$this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "のファイル名に日本語やスペースは使用しないで下さい。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
/*-----------------------------------------------------------------*/
/* 年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 引数 (開始年,開始月,開始日,終了年,終了月,終了日)
/* 1.開始年月日 (YYYYMMDD 000000)
/* 2.終了年月日 (YYYYMMDD 235959)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[5]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
$this->arrErr[$value[5]] = "※ " . $value[1] . "を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == "") && $date1 > $date2) {
$this->arrErr[$value[2]] = "※ " . $value[0]. "と" . $value[1]. "の期間指定が不正です。<br />";
/*-----------------------------------------------------------------*/
/* 年月日時に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 引数 (開始年,開始月,開始日,開始時間,開始分,開始秒,
/* 終了年,終了月,終了日,終了時間,終了分,終了秒)
/* 1.開始年月日 (YYYYMMDDHHmmss)
/* 2.終了年月日 (YYYYMMDDHHmmss)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
// value[6] = start_minute
// value[7] = start_second
// value[12] = end_minute
// value[13] = end_second
/*-----------------------------------------------------------------*/
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[8]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
$this->arrErr[$value[8]] = "※ " . $value[1] . "を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[8]] == "") && $date1 > $date2) {
$this->arrErr[$value[2]] = "※ " . $value[0]. "と" . $value[1]. "の期間指定が不正です。<br />";
$this->arrErr[$value[2]] = "※ " . $value[0]. "と" . $value[1]. "の期間指定が不正です。<br />";
/*-----------------------------------------------------------------*/
/* 年月に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 1.開始年月日 (YYYYMMDD 000000)
/* 2.終了年月日 (YYYYMMDD 235959)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
if(isset ($this->arrErr[$value[2]]) || isset ($this->arrErr[$value[4]])) {
$this->createParam($value);
$this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
$this->arrErr[$value[4]] = "※ " . $value[1] . "を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == "") && $date1 > $date2) {
$this->arrErr[$value[2]] = "※ " . $value[0]. "と" . $value[1]. "の期間指定が不正です。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] = "※ 指定した" . $value[0] . "は存在しません。<br />";
if(isset ($this->arrErr[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "の形式が不正です。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset ($this->arrErr[$value[1]])) {
$this->createParam($value);
$objMobile = new SC_Helper_Mobile_Ex();
if(strlen($this->arrParam[$value[1]]) > 0 && !$objMobile->gfIsMobileMailAddress($this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] = "※ " . $value[0] . "は携帯電話のものではありません。<br />";
* value[0] = 項目名 value[1] = 判定対象文字列
* value[2] = 入力を禁止する文字列(配列)
* @example $objErr->doFunc(array("URL", "contents", $arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
if( isset ($this->arrErr[$value[1]]) || empty($this->arrParam[$value[1]]) ) {
$this->createParam($value);
$targetStr = $this->arrParam[$value[1]];
$prohibitedStr = str_replace(array('|', '/'), array('\|', '\/'), $value[2]);
$pattern = '/' . join('|', $prohibitedStr) . '/i';
$this->arrErr[$value[1]] = "※ " . $value[0] . "は入力できません。<br />";
* @param array $value [0] => 項目名, [1] => 評価する文字列
function EVAL_CHECK($value) {
if (isset ($this->arrErr[$value[0]])) {
$this->createParam($value);
if ($this->evalCheck($value[1]) === false) {
$this->arrErr[$value[0]] = "※ " . $value[0] . " の形式が不正です。<br />";
* $value が PHPコードとして評価可能かチェックする.
* @param mixed PHPコードとして評価する文字列
* @return mixed PHPコードとして評価できない場合 false,
function evalCheck($value) {
return @eval ("return " . $value . ";");
* 未定義の $this->arrParam に空要素を代入する.
function createParam($value) {
foreach ($value as $key) {
Documentation generated on Fri, 24 Feb 2012 14:00:01 +0900 by Seasoft
|